/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package bs.facturacion.vista;

import bs.facturacion.modelo.MovimientoFacturacion;
import bs.stock.modelo.Producto;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

/**
 *
 * @author Claudio
 */
@Entity
@Table(name = "fc_pendiente_detalle")
@IdClass(PendienteFacturacionDetallePK.class)
public class PendienteFacturacionDetalle implements Serializable {
    private static final long serialVersionUID = 1L;
    
    @Id
    @Column(name = "ID_IAPL")
    private Integer idItemAplicacion;
    @Id
    @Column(name = "ID_MAPL")
    private Integer idMovimientoAplicacion;
    
    @Column(name = "CIRCOM", length = 2)
    private String circom;
    
    @Column(name = "cirapl", length = 6)
    private String cirapl;
    
    @Column(name = "NROCTA")
    private String nrocta;
    
    @Column(name = "CODFOR")
    private String codfor;

    @Column(name = "NROFOR")
    private Integer nrofor;
    
    @Column(name = "FCHMOV")
    @Temporal(TemporalType.DATE)
    private Date fchmov;

    @JoinColumn(name = "ARTCOD", referencedColumnName = "CODIGO", nullable = false, insertable=true, updatable=true)    
    @ManyToOne(optional=false, fetch=FetchType.LAZY)
    private Producto producto;
    
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "ID_MAPL", referencedColumnName = "ID", nullable = false, insertable = false, updatable = false)        
    MovimientoFacturacion movimientoAplicacion;

    @Column(name = "PENDIENTE", precision = 15, scale = 2)
    private BigDecimal cantidad;

    @Column(name = "PRECIO", precision = 15, scale = 2)
    private BigDecimal precio;
    
    @Transient
    private boolean seleccionado;

    public PendienteFacturacionDetalle() {
        
    }

    public Integer getIdItemAplicacion() {
        return idItemAplicacion;
    }

    public void setIdItemAplicacion(Integer idItemAplicacion) {
        this.idItemAplicacion = idItemAplicacion;
    }

    public Integer getIdMovimientoAplicacion() {
        return idMovimientoAplicacion;
    }

    public void setIdMovimientoAplicacion(Integer idMovimientoAplicacion) {
        this.idMovimientoAplicacion = idMovimientoAplicacion;
    }

    public String getCircom() {
        return circom;
    }

    public void setCircom(String circom) {
        this.circom = circom;
    }

    public String getCirapl() {
        return cirapl;
    }

    public void setCirapl(String cirapl) {
        this.cirapl = cirapl;
    }

    public String getNrocta() {
        return nrocta;
    }

    public void setNrocta(String nrocta) {
        this.nrocta = nrocta;
    }

    public String getCodfor() {
        return codfor;
    }

    public void setCodfor(String codfor) {
        this.codfor = codfor;
    }

    public Integer getNrofor() {
        return nrofor;
    }

    public void setNrofor(Integer nrofor) {
        this.nrofor = nrofor;
    }

    public Date getFchmov() {
        return fchmov;
    }

    public void setFchmov(Date fchmov) {
        this.fchmov = fchmov;
    }

    public Producto getProducto() {
        return producto;
    }

    public void setProducto(Producto producto) {
        this.producto = producto;
    }

    public BigDecimal getCantidad() {
        return cantidad;
    }

    public void setCantidad(BigDecimal cantidad) {
        this.cantidad = cantidad;
    }

    public BigDecimal getPrecio() {
        return precio;
    }

    public void setPrecio(BigDecimal precio) {
        this.precio = precio;
    }

    public boolean isSeleccionado() {
        return seleccionado;
    }

    public void setSeleccionado(boolean seleccionado) {
        this.seleccionado = seleccionado;
    }

    public MovimientoFacturacion getMovimientoAplicacion() {
        return movimientoAplicacion;
    }

    public void setMovimientoAplicacion(MovimientoFacturacion movimientoAplicacion) {
        this.movimientoAplicacion = movimientoAplicacion;
    }
    
    @Override
    public int hashCode() {
        int hash = 3;
        hash = 53 * hash + (this.idItemAplicacion != null ? this.idItemAplicacion.hashCode() : 0);
        hash = 53 * hash + (this.idMovimientoAplicacion != null ? this.idMovimientoAplicacion.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final PendienteFacturacionDetalle other = (PendienteFacturacionDetalle) obj;
        if (this.idItemAplicacion != other.idItemAplicacion && (this.idItemAplicacion == null || !this.idItemAplicacion.equals(other.idItemAplicacion))) {
            return false;
        }
        if (this.idMovimientoAplicacion != other.idMovimientoAplicacion && (this.idMovimientoAplicacion == null || !this.idMovimientoAplicacion.equals(other.idMovimientoAplicacion))) {
            return false;
        }
        return true;
    }
    
    @Override
    public String toString() {
        return "ItemPendienteFacturacion{" + "idItemAplicacion=" + idItemAplicacion + ", idMovimientoAplicacion=" + idMovimientoAplicacion + '}';
    }
    
}
